{{ $id := delimit (slice "codeberg" (partial "functions/uid.html" .)) "-" }}
{{- $codebergURL := print "https://codeberg.org/api/v1/repos/" (.Get "repo") -}}
{{- $codebergColors := .Site.Data.repoColors -}}
{{- $codebergData := dict -}}
{{- with try (resources.GetRemote $codebergURL) -}}
  {{- with .Err -}}
    {{- warnf "codeberg shortcode: failed to fetch remote resource from %q: %s" $codebergURL $.Position -}}
  {{- else with .Value -}}
    {{- $codebergData = . | transform.Unmarshal -}}
  {{- else -}}
    {{- warnf "codeberg shortcode: unable to get remote resource from %q: %s" $codebergURL $.Position -}}
  {{- end -}}
{{- end -}}

{{- with $codebergData -}}
  <div class="codeberg-card-wrapper">
    <a id="{{ $id }}" target="_blank" href="{{ .html_url }}" class="cursor-pointer">
      <div
        class="w-full md:w-auto pt-3 p-5 border border-neutral-200 dark:border-neutral-700 border rounded-md shadow-2xl">
        <div class="flex items-center">
          <span class="text-2xl text-neutral-800 dark:text-neutral mr-[10px]">
            {{ partial "icon.html" "codeberg" }}
          </span>
          <div
            id="{{ $id }}-full_name"
            class="m-0 font-bold text-xl text-neutral-800 decoration-primary-500 hover:underline hover:underline-offset-2 dark:text-neutral">
            {{ .full_name | markdownify }}
          </div>
        </div>

        <p id="{{ $id }}-description" class="m-0 mt-2 text-md text-neutral-800 dark:text-neutral">
          {{ .description | markdownify }}
        </p>

        <div class="m-0 mt-2 flex items-center">
          <span
            class="mr-1 inline-block h-3 w-3 rounded-full"
            style="background-color: {{ if .language }}
              {{- index $codebergColors .language -}}
            {{ else }}
              #0077b6
            {{ end }}"></span>
          <div class="m-0 mr-5 text-md text-neutral-800 dark:text-neutral">
            {{ if .language }}{{ .language }}{{ else }}null{{ end }}
          </div>

          <span class="text-md mr-1 text-neutral-800 dark:text-neutral">
            {{ partial "icon.html" "star" }}
          </span>
          <div id="{{ $id }}-stars_count" class="m-0 mr-5 text-md text-neutral-800 dark:text-neutral">
            {{ .stars_count }}
          </div>

          <span class="text-md mr-1 text-neutral-800 dark:text-neutral">
            {{ partial "icon.html" "fork" }}
          </span>
          <div id="{{ $id }}-forks_count" class="m-0 mr-5 text-md text-neutral-800 dark:text-neutral">
            {{ .forks_count }}
          </div>
        </div>
      </div>
      {{ $fetchRepo := resources.Get "js/fetch-repo.js" }}
      {{ $fetchRepo = $fetchRepo | resources.Minify | resources.Fingerprint ($.Site.Params.fingerprintAlgorithm | default "sha512") }}
      <script
        async
        type="text/javascript"
        src="{{ $fetchRepo.RelPermalink }}"
        integrity="{{ $fetchRepo.Data.Integrity }}"
        data-repo-url="{{ $codebergURL }}"
        data-repo-id="{{ $id }}"></script>
    </a>
  </div>
{{- else -}}
  {{ warnf "codeberg shortcode: unable to fetch %q: %s" $codebergURL .Position }}
{{- end -}}
